/**
* Copyright (c) 2015 UNI-TREND Co., Ltd.
* All rights reserved.  
*  
* @file        
* @brief     
* @version     1.0 
* @author      
* @Email       
* @date        2015-12-3
*/
#pragma once
#include "Assistant.h"
/**
* Interface of Setup Channels, all types
*/
class ISVertical
{
public:
    ISVertical();
};

/**
* CH
*/
class CSChannel : public ISVertical
{
public:
    CSChannel();
    ~CSChannel();
    // TODO: operation =, to deep copy from another obj, e.g. default setup
    // TODO: or make a func to be default
    typedef enum
    {
        COUPLING_DC,
        COUPLING_AC,
        COUPLING_GND,
        COUPLING_MAX
    }E_COUPLING;
    typedef enum
    {
        BW_LIMIT_OFF,
        //BW_LIMIT_20M,
        BW_LIMIT_ALL,
        BW_LIMIT_MAX
    }E_BW_LIMIT;
    typedef enum
    {
        PROBE_MIN = 0,
        PROBE_1m  = PROBE_MIN,
        PROBE_2m,
        PROBE_5m,
        PROBE_10m,
        PROBE_20m,
        PROBE_50m,
        PROBE_100m,
        PROBE_200m,
        PROBE_500m,
        PROBE_1X,
        PROBE_2X,
        PROBE_5X,
        PROBE_10X,
        PROBE_20X,
        PROBE_50X,
        PROBE_100X,
        PROBE_200X,
        PROBE_500X,
        PROBE_1000X,
        PROBE_MAX
    }E_PROBE;

private:
    E_COUPLING  m_coupling;
    E_BW_LIMIT  m_bwLimit;    
    BOOL        m_isVdivFine;/**default = false, means Coarse mode */
    BOOL        m_isUnitA;/**default = false, means unit = V, not A*/
    float       m_volt;/**scale*/
    float       m_offset;/**position*/
    E_PROBE     m_probe;
    BOOL        m_isInvertOn;/**default = false, means do not invert*/    
    BOOL        m_isBiasOn;/**default = false, off bias mode*/    
    float       m_biasVolt;/** if m_isBiasOn==TRUE then it's usable */
public:
    
};
/**
* EXT-CH
*/
class CSExtChannel : public ISVertical
{
};
/**
* Anolog-CH
*/
class CSAnologChannel : public ISVertical
{
};

